home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / cserial / ctrl_brk.c < prev    next >
C/C++ Source or Header  |  1990-04-04  |  1KB  |  63 lines

  1. /*
  2.  *                              CTRL_BRK.C
  3.  *
  4.  *                           Written for the
  5.  *
  6.  *                              Datalight
  7.  *                           Microsoft V 5.x
  8.  *                                TurboC
  9.  *                                  &
  10.  *                               Zortech
  11.  *
  12.  *                             C Compilers
  13.  *
  14.  *            Copyright (c) John Birchfield 1987, 1988, 1989
  15.  */
  16.  
  17. #include "dependnt.h"
  18.  
  19. #if (defined (DLC))
  20. int 
  21. brk_handler ()
  22. {
  23.     return (1);
  24. }
  25. #else
  26. int     cb_happened = 0;
  27. void    (interrupt far * brk_save_vec) (void);
  28. void interrupt far 
  29. brk_handler (void)
  30. {
  31.     cb_happened = 1;
  32. }
  33. #endif
  34.  
  35. static int ctrl_brk_blocked =  0;
  36. void 
  37. trap_ctrl_break (void)
  38. {
  39.     if (ctrl_brk_blocked)
  40.         return;
  41.     ctrl_brk_blocked = 1;
  42. #if (defined (DLC))
  43.     int_intercept (0x23, &brk_handler, 128);
  44. #else
  45.     brk_save_vec = getvect (0x23);
  46.     setvect (0x23, brk_handler);
  47. #endif
  48. }
  49.  
  50. void 
  51. release_ctrl_break (void)
  52. {
  53.     if (!ctrl_brk_blocked)
  54.         return;
  55.     ctrl_brk_blocked = 0;
  56. #if (defined (DLC))
  57.     int_restore (0x23);
  58. #else
  59.     setvect (0x23, brk_save_vec);
  60. #endif
  61. }
  62.  
  63.